Hello working on the 2d tutorial and run into a problem with the Health and Damage script well the script does nothing i take 0 damage

Code:
using UnityEngine;

public class HealthBar : MonoBehaviour
{
    public Player Player;
    public Transform ForegroundSprite;
    public SpriteRenderer ForegroundRenderer;
    public Color MaxHealthColor = new Color(255 / 255f, 63 / 255f, 63 / 255f);
    public Color MinHealthColor = new Color(64 / 255f, 137 / 255f, 255 / 255f);

    public void Update()
    {
        var healthPercent = Player.Health / (float) Player.MaxHealth;

        ForegroundSprite.localScale = new Vector3(healthPercent, 1, 1);
        ForegroundRenderer.color = Color.Lerp(MaxHealthColor, MinHealthColor, healthPercent);
    }
}
Code:
using UnityEngine;

public class GiveDamageToPlayer : MonoBehaviour
{
    public int DamageToGive = 10;

    private Vector2
        _lastPosition,
        _velocity;

    public void LateUpdate()
    {
        _velocity = (_lastPosition - (Vector2) transform.position) / Time.deltaTime;
        _lastPosition = transform.position;
    }

    public void OnTiggerEnter2D(Collider2D other)
    {
        var player = other.GetComponent<Player>();
        if (player == null)
            return;

        player.TakeDamage(DamageToGive);
        var controller = player.GetComponent<CharacterController2D>();
        var totalVelocity = controller.Velocity + _velocity;

        controller.SetForce(new Vector2(
            -1 * Mathf.Sign(totalVelocity.x) * Mathf.Clamp(Mathf.Abs(totalVelocity.x) * 5, 10, 20),
            -1 * Mathf.Sign(totalVelocity.y) * Mathf.Clamp(Mathf.Abs(totalVelocity.y) * 2, 0, 15)));
    }
}
Code:
using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour {
	private bool _isFacingRight;
	private CharacterController2D _controller;
	private float _normalizedHorizontalSpeed;

	public float MaxSpeed = 8;
	public float SpeedAcclerationOnGround = 10f;
	public float SpeedAcclerationInAir = 5f;
    public int MaxHealth = 100;
    public GameObject OuchEffect;

    public int Health { get; private set; }
    public bool IsDead { get; private set; }
	public void Awake() 
    {
		_controller = GetComponent<CharacterController2D>();
		_isFacingRight = transform.localScale.x > 0;
	    Health = MaxHealth;
    }

	public void Update() 
    {
        if (!IsDead)
		    HandleInput();

		var movementFactor = _controller.State.IsGrounded ? SpeedAcclerationOnGround : SpeedAcclerationInAir;

        if (IsDead)
            _controller.SetHorizontalForce(0);
        else
		_controller.SetHorizontalForce(Mathf.Lerp(_controller.Velocity.x, _normalizedHorizontalSpeed * MaxSpeed, Time.deltaTime * movementFactor));
	}

    public void Kill()
    {
        _controller.HandleCollisions = false;
        collider2D.enabled = false;
        IsDead = true;
        Health = 0;

        _controller.SetForce(new Vector2(0, 20));
    }

    public void RespawnAt(Transform spawnPoint)
    {
        if (!_isFacingRight)
            Flip();

        IsDead = false;
        collider2D.enabled = true;
        _controller.HandleCollisions = true;
        Health = MaxHealth;

        transform.position = spawnPoint.position;
    }

    public void TakeDamage(int damage)
    {
        Instantiate(OuchEffect, transform.position, transform.rotation);
        Health -= damage;

        if (Health <= 0)
            LevelManager.Instance.KillPlayer();
    }


	private void HandleInput() {
		if (Input.GetKey(KeyCode.D)) {
			_normalizedHorizontalSpeed = 1;
			if (!_isFacingRight)
				Flip();
		}
				else if (Input.GetKey(KeyCode.A)) {
					_normalizedHorizontalSpeed = -1;
					if (_isFacingRight)
						Flip();
		}
		else {
			_normalizedHorizontalSpeed = 0;
		}

		if (_controller.CanJump && Input.GetKeyDown(KeyCode.Space)) {
			_controller.Jump();
		}
	}

	private void Flip() {
		transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
		_isFacingRight = transform.localScale.x > 0;
	}
}