My character is teleported the wrong direction despite the code saying to teleport to the ball

I know it doesnt make sense. here is a youtube link demonstrating the issue - YouTube

here is the code im using

using UnityEngine;
using System.Collections;

public class teleporter : MonoBehaviour {
public GameObject launchloc;
public GameObject teleTarget;
private Vector3 launchpos;
private Vector3 telepos;
// Use this for initialization
void Start () {
launchpos = launchloc.transform.position;
}

// Update is called once per frame
void Update () {
    if (GameObject.FindGameObjectWithTag("teleLoc"))
        telepos = GameObject.FindGameObjectWithTag("teleLoc").transform.position;
    launchpos = launchloc.transform.position;
    if (Input.GetKeyDown(KeyCode.Mouse0))
        Instantiate(teleTarget, launchpos, Quaternion.identity);
    if (Input.GetKeyUp(KeyCode.Mouse0))
        transform.Translate(telepos);
}

}

Transform.Translate moves the transform in the direction of the vector but you have a position vector. the direction vector should be telepos - transform.position so change line 9 to
transform.Translate( telepos - transform.position );