My double jump won't work i have this code from BlackThornProds video ,My Double Jump won't work

i set the extra value to 1 but it keeps not working it jumps as many times as i press the up key.

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

public class PlayerController : MonoBehaviour
{

private int xtraJumps;
public int xtraJumpVal;

private bool isGrounded;
public Transform GroundCheck;
public float CheckRadius;
public LayerMask WhatIsGround;

private bool facingRight = true;
public float speed;

public float jumpForce;

private float moveInput;

private Rigidbody2D rb;

private void Start()
{
    xtraJumps = xtraJumpVal;
    rb = GetComponent<Rigidbody2D>();
}

void Update()
{

    if(isGrounded == true)
    {
        xtraJumps = xtraJumpVal;
    }

    if (Input.GetKeyDown(KeyCode.W) && xtraJumps > 0)
    {
        rb.velocity = Vector2.up * jumpForce;
        xtraJumps--;
        
    }else if(Input.GetKeyDown(KeyCode.W) && xtraJumps == 0 && isGrounded == true)
    {
        rb.velocity = Vector2.up * jumpForce;
    }
}

private void FixedUpdate()
{

    isGrounded = Physics2D.OverlapCircle(GroundCheck.position, CheckRadius, WhatIsGround);

    moveInput = Input.GetAxisRaw("Horizontal");
    rb.velocity = new Vector2(moveInput * speed, rb.velocity.y);
    if (facingRight == false && moveInput > 0)
    {
        Flip();

    }
    else if(facingRight == true && moveInput < 0)
    {
        Flip();
    }
}



void Flip()
{
    facingRight = !facingRight;
    Vector3 Scaler = transform.localScale;
    Scaler.x *= -1;
    transform.localScale = Scaler;
}

}`
,

wdaefrgdwafegrafesgr