Why does my player just fall through the floor right when I press play?

I’m a bit of a noob at unity and C# can anyone solve this, i was watching a Brackeys tutorial and there are no errors in the console. I also don’t know how to write & sign so i copied and pasted off the web.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class playermovement : MonoBehaviour
{
public CharacterController controller;

public float speed = 12f;
public float gravity = -9.81f;

public Transform groundCheck;
public float groundDistance = 0.4f;
public LayerMask groundMask;
bool isGrounded;

Vector3 velocity; 

// Update is called once per frame
void Update()
{


    if(isGrounded && velocity.y <0)
    {
        velocity.y = -2f;
    }
    
    float x = Input.GetAxis("Horizontal");
    float z = Input.GetAxis("Vertical");

    Vector3 move = transform.right * x + transform.forward * z;

    controller.Move(move * speed * Time.deltaTime);

    velocity.y += gravity * Time.deltaTime;

Does your player have a rigid body and does the floor have a collider?

2 things: Make sure NavMesh is baked (very important), and make sure the player is set just a little bit above the terrain, or right on it. If the player is even a bit into/below the terrain, causes fall through.