Smoothdamp NaN problem

I’m using smoothdamp in a scene. When i changed scene and return back to scene that i use smoothdamp, velocity returns NaN. How can i solve this problem?

My script:

void Update()
{
    if (transform.position.z == 0)
    {
        if (Input.GetMouseButtonDown(0))
        {
            firstPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition).x;
            x1 = firstPosition;
        }
        if (Input.GetMouseButton(0))
        {
            mouseButtonUp = false;
            secondPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition).x;
            transform.localPosition += new Vector3(secondPosition - firstPosition, transform.localPosition.y, transform.localPosition.z);
            if (transform.localPosition.x > leftLimit.position.x)
            {
                transform.localPosition = leftLimit.position;
            }
            else if (transform.localPosition.x < rightLimit.position.x)
            {
                transform.localPosition = rightLimit.position;
            }
            firstPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition).x;
        }
        if (Input.GetMouseButtonUp(0))
        {
            x2 = Camera.main.ScreenToWorldPoint(Input.mousePosition).x;
            distance = x1 - x2;
            mouseButtonUp = true;

        }
        if (mouseButtonUp)
        {
            if (distance > 5.5f)
            {
                float xPosition = Mathf.SmoothDamp(transform.localPosition.x, rightLimit.position.x, ref xVelocity, smoothTime);
                transform.localPosition = new Vector3(xPosition, transform.localPosition.y, transform.localPosition.z);
                if (Mathf.Abs(transform.localPosition.x - rightLimit.position.x) < 0.1f)
                {
                    mouseButtonUp = false;
                }
            }
            else if (distance < 5.5f  distance >= 0  transform.localPosition.x >= 0)
            {
                float xPosition = Mathf.SmoothDamp(transform.localPosition.x, leftLimit.position.x, ref x1Velocity, smoothTime2);
                transform.localPosition = new Vector3(xPosition, transform.localPosition.y, transform.localPosition.z);
                if (Mathf.Abs(transform.localPosition.x - leftLimit.position.x) < 0.1f)
                {
                    mouseButtonUp = false;
                }
            }
            else if (distance < -5.5f)
            {
                float xPosition = Mathf.SmoothDamp(transform.localPosition.x, leftLimit.position.x, ref x2Velocity, smoothTime3);
                transform.localPosition = new Vector3(xPosition, transform.localPosition.y, transform.localPosition.z);

                if (Mathf.Abs(transform.localPosition.x - leftLimit.position.x) < 0.1f)
                {
                    mouseButtonUp = false;
                }
            }
            else if (distance > -5.5f  distance < 0  transform.localPosition.x < 0)
            {
                float xPosition = Mathf.SmoothDamp(transform.localPosition.x, rightLimit.position.x, ref x3Velocity, smoothTime4);
                transform.localPosition = new Vector3(xPosition, transform.localPosition.y, transform.localPosition.z);
                if (Mathf.Abs(transform.localPosition.x - rightLimit.position.x) < 0.1f)
                {
                    mouseButtonUp = false;
                }
            }
            x2 = x1;
        }
    }
}

Could anyone help me with this please?

Could anyone help me with this please?