Camera jitter when moving sideways

Hi, I have a problem where the player jitters like crazy when moving sideways but it is smooth when moving forward. I am guessing it is because the camera and how the players movment is reliant on it but i cant figure out how to fix it.

Here is the script for the camera:

using UnityEngine;
using UnityEngine.InputSystem;

public class CameraFollow : MonoBehaviour
{
    public Transform player;
    public InputActionReference look;
    public float sensitivity;
    public float smoothfollow = 0.1f;
    public float looksmoothing = 0.1f;    
    public Vector3 offset = new Vector3(0, 5, -10); 
    private Vector2 lookdiraction;

    void Update()
    {
        lookdiraction = look.action.ReadValue<Vector2>();

        float xRotation = lookdiraction.y * sensitivity;
        float yRotation = lookdiraction.x * sensitivity;

        transform.RotateAround(player.position, Vector3.up, yRotation);
        transform.RotateAround(player.position, transform.right, -xRotation);
   
        transform.position = Vector3.Lerp(transform.position, player.position , smoothfollow);
        
    }
}

Here is the player movment script:

using UnityEngine;
using UnityEngine.InputSystem;
public class Playermovment : MonoBehaviour
{
    public InputActionReference move;    
    public InputActionReference jump;
    public InputActionReference sprint;
    public Transform playerpos;
    public Rigidbody playerrb;
    public float movespeed;
    public float airspeed;
    public float jumpforce;
    public float rotationspeed;
    public float jumpdelay;
    public float checkdistance = 0.1f;
    public float sprintspeed;
    private Vector3 movedirection;
    private bool isgrounded;
    private float jumpdelaytimer = 0f;
    private bool jumpdelaytimerstart = false;


   public 
    void Start()
    {
        
    }


    void Update()
    {
        if(movedirection != Vector3.zero)
        {
            Quaternion torotation = Quaternion.LookRotation(movedirection, Vector3.up);
            playerpos.rotation = Quaternion.RotateTowards(playerpos.rotation, torotation, rotationspeed * Time.unscaledDeltaTime);  

        }
    
        Vector2 moveInput = move.action.ReadValue<Vector2>();
        Vector3 cameraForward = Camera.main.transform.forward;
        Vector3 cameraRight = Camera.main.transform.right;

        cameraForward.y = 0f; 
        cameraRight.y = 0f;

        cameraForward = cameraForward.normalized;
        cameraRight = cameraRight.normalized;

        movedirection = cameraForward * moveInput.y + cameraRight * moveInput.x;
        
        
        jumpdelaytimer -= Time.unscaledDeltaTime;
        isgrounded = Physics.Raycast(playerpos.position, Vector3.down, checkdistance);
        if(isgrounded == false)
        {
            if(sprint.action.ReadValue<float>() > 0)
            {
                playerpos.position += movedirection * sprintspeed * airspeed * Time.unscaledDeltaTime;
            }
            else
            {
                playerpos.position += movedirection * movespeed * airspeed * Time.unscaledDeltaTime;
            }
        }
        else
        {
            if(sprint.action.ReadValue<float>() > 0)
            {
                playerpos.position += movedirection * sprintspeed * Time.unscaledDeltaTime;
            }
            else
            {
                playerpos.position += movedirection * movespeed * Time.unscaledDeltaTime;
            }
        }

        if(jumpdelaytimerstart == true)
        {
            jumpdelaytimer -= Time.unscaledDeltaTime;
            if(jumpdelaytimer < 0)
            {
                jumpdelaytimerstart = false;
                playerrb.AddForce(Vector3.up * jumpforce, ForceMode.Impulse);
            }
        }


    }

     private void OnEnable()
    {
        jump.action.started += JUMP;
    }

    private void OnDisable()
    {
        jump.action.started -= JUMP;
    }

    private void JUMP(InputAction.CallbackContext obj)
    {
        
        if(isgrounded == true)
        {
   
            
            jumpdelaytimer = jumpdelay;
            jumpdelaytimerstart = true;
            
        }
        

        
    }

}