Mathf Clamp not working as expected

Hi,
I have an issue on my code, in a 3D 1st Person Controller i am trying to develop.
I am attempting to clamp my y value on my camera rotation in order to make it behave correctly.
But, for some reason, the clamp is not working.

Player Controller:

using UnityEngine;

[RequireComponent(typeof(PlayerMotor))]
public class PlayerController : MonoBehaviour {

	//Camera Rotation Max and Min value
	[SerializeField]
	private float MaxMinCameraY = 60f;
	//Vertical Y Camera Axis Rotation Value
	public float yRot;
	//Horizontal X Camera Axis Rotation Value
	public float xRot;
	//Horizontal X Movement Value
	public float xMov;
	//Forwarz Z Movement Value
	public float zMov;
	//Jump Power
	[SerializeField]
	private float JumpPower = 5f;
	//Character Running
	[SerializeField]
	private bool isRunning = false;
	//Character Crouching
	[SerializeField]
	private bool isCrouching = false;
	//Speed being used
	public static float setSpeed;
	//Walking Speed
	[SerializeField]
	private float walkingSpeed = 10.0f;
	//Running Speed
	[SerializeField]
	private float runningSpeed = 20.0f;
	//Crouching Speed
	[SerializeField]
	private float crouchingSpeed = 6.0f;
	//Look Sensitivity
	[SerializeField]
	private float lookSensitivity = 3f;
	//Character touching the ground
	[SerializeField]
	private bool onGround = true;
	//RigidBody
	private Rigidbody rb;
	//Player Motor
	private PlayerMotor motor;

	void Start ()
	{
		motor = GetComponent<PlayerMotor>();
		rb = GetComponent<Rigidbody> ();
		setSpeed = walkingSpeed;
		onGround = true;
	}

	void Update ()
	{
		//Axis Variables
		xMov = Input.GetAxisRaw("Horizontal");
		zMov = Input.GetAxisRaw("Vertical");

		//Detect if character is running, walking or crouching, to set speed
		if (Input.GetKeyDown("left shift") && !isCrouching)
		{
			isRunning = true;
			setSpeed = runningSpeed;
		}
		if (Input.GetKeyUp("left shift"))
		{
			isRunning = false;
			setSpeed = walkingSpeed;
		}
		if (Input.GetKeyDown("c") || !isRunning)
		{
			isCrouching = true;
			setSpeed = crouchingSpeed;
		}
		if (Input.GetKeyUp("c"))
		{
			isCrouching = false;
			setSpeed = walkingSpeed;
		}

		//Set desired speed. According to Running, Crouching or Walking
		float translation = Input.GetAxis ("Vertical") * setSpeed;
		translation *= Time.deltaTime;

		//Vector3s for movement
		Vector3 _movHorizontal = transform.right * xMov;
		Vector3 _movVertical = transform.forward * zMov;

		// Final movement vector
		Vector3 _velocity = (_movHorizontal + _movVertical).normalized * setSpeed;

		//Apply movement
		motor.Move(_velocity);

		//Horizontal Rotation
		//Calculate rotation as a 3D vector (turning around)
		xRot = Input.GetAxisRaw("Mouse X");
		//Make it turn around the Y axis. And add the look sensitivity to it
		Vector3 _rotation = new Vector3(0f, xRot, 0f) * lookSensitivity;
		//Apply rotation
		motor.Rotate(_rotation);

		//Calculate camera rotation as a 3D vector (turning up and down)
		yRot = Input.GetAxisRaw("Mouse Y") * lookSensitivity;


		yRot = Mathf.Clamp (yRot, -MaxMinCameraY, MaxMinCameraY);

		Vector3 cameraRotation = new Vector3(yRot, 0f, 0f);

		//Apply camera rotation
		motor.RotateCamera(cameraRotation);

		//If character jumps
		if (Input.GetKeyDown("space") && onGround)
		{
			rb.velocity = new Vector3 (0f, JumpPower, 0f);
			onGround = false;
		}
		//If character jumps
		if (Input.GetKeyUp("space") && !onGround)
		{
			onGround = true;
		}
	}
}

Player Motor:

using UnityEngine;

[RequireComponent(typeof(Rigidbody))]
public class PlayerMotor : MonoBehaviour {

	//Player Camera
	[SerializeField]
	private Camera cam;
	//Movement Velocity Vector3
	private Vector3 velocity = Vector3.zero;
	//Rotation Vector3
	private Vector3 rotation = Vector3.zero;
	//Camera Rotation Vector3
	private Vector3 cameraRotation = Vector3.zero;
	//RigidBody
	private Rigidbody rb;

	void Start ()
	{
		rb = GetComponent<Rigidbody>();
	}

	// Gets a movement vector
	public void Move (Vector3 _velocity)
	{
		velocity = _velocity;
	}

	// Gets a rotational vector
	public void Rotate(Vector3 _rotation)
	{
		rotation = _rotation;
	}

	// Gets a rotational vector for the camera
	public void RotateCamera(Vector3 _cameraRotation)
	{
		cameraRotation = _cameraRotation;
	}

	// Run every physics iteration
	void FixedUpdate ()
	{
		PerformMovement();
		PerformRotation();
	}

	//Perform movement based on velocity variable
	void PerformMovement ()
	{
		if (velocity != Vector3.zero)
		{
			rb.MovePosition(rb.position + velocity * Time.fixedDeltaTime);
		}
	}

	//Perform rotation of the camera with the body
	void PerformRotation ()
	{
		rb.MoveRotation(rb.rotation * Quaternion.Euler (rotation));
		if (cam != null)
		{
			cam.transform.Rotate(-cameraRotation);
		}
	}

}

We don’t really know what you mean when you say it’s not working when you don’t tell us what it is doing. But looking at your code, I have to question this:

yRot = Mathf.Clamp (yRot, -MaxMinCameraY, MaxMinCameraY);
Vector3 cameraRotation = new Vector3(yRot, 0f, 0f);

Why are you applying your yRot to the X value of your camera rotation? I also see that you are applying your xRot to the y value of the rotation. Was this intentional?