my seconds aint countin down?

i was actually building a clone for the super mario game i m on the to completing it . but in one of my levels ive made a script called"CountingDown" the script tht you see above ,nd the script shows no error in visual studios , ive initiallized my no of seconds to 301 nd i clicked save nd then went back to unity nd clicked play but the seconds is not counting down from 301 to 0 which it actually should , but it stays at 301 frozen . but one av the times whenn i clicked play it did show an error sayin “null reference exception ,object could not be found” . when i went back to my script i still couldn find the null error.

i hope my bros here would help me find the error
plssss,im actually creating a cone for a super mario game . nd this script you see above should countdown my time in seconds from 300 to 0 . But when i save the script and head back to unity and press play it does not countdown. Its just frozen at 301 at the top av my screen . so is there any solution to this problem . once on further playing the game again it did show an error sayin “null exception error . could not be found” nd i went back to check the error nd i couldnt find it. i hope you could find the solution to my error .
thnx in advance
this is my script:

using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityStandardAssets.Characters.ThirdPerson;

public class CountingDown : MonoBehaviour
{

	public int TotalTime = 301;
	public GameObject TimeDisplay;
	public int CalculatingTime;
	public AudioSource DeathSound;
	public GameObject LevelMusic;
	public GameObject CamFollow;
	public GameObject ThePlayer;
	public int KeepZero;

	[System.Obsolete]
	void Update()
	{
		if (KeepZero == 0)
		{
			TimeDisplay.GetComponent<Text>().text = "" + TotalTime;
		}

		if (CalculatingTime == 0)
		{
			DeductTime();
		}

		if (TotalTime == 0)
		{
		    TimeUp();
		}
	}

	IEnumerator DeductTime()
	{
		CalculatingTime = 1;
		TotalTime -= 1;
		yield return new WaitForSeconds(1);
		CalculatingTime = 0;
	}

	[System.Obsolete]
	IEnumerator TimeUp()
	{
		TotalTime -= 1;
		KeepZero = 1;
		TimeDisplay.GetComponent<Text>().text = "0";
		GlobalLives.LivesAmount -= 1;
		LevelMusic.SetActive(false);
		DeathSound.Play();
		CamFollow.GetComponent<CameraFollow>().enabled = false;
		ThePlayer.GetComponent<ThirdPersonUserControl>().enabled = false;
		ThePlayer.GetComponent<ThirdPersonCharacter>().enabled = false;
		//ThePlayer.transform.localScale -= new Vector3(0.0f, 0.7f, 0.0f);
		ThePlayer.GetComponent<CapsuleCollider>().enabled = false;
		yield return new WaitForSeconds(3);
		Application.LoadLevel(4);
	}
}

Your problem is thankfully quite simple - You’re using IENumerators, which is a Coroutine. This is absolutely the right thing to do, but to run a Coroutine, you need to wrap your call to your function with StartCoroutine();.

For the example above:

     if (CalculatingTime == 0)
     {
         StartCoroutine(DeductTime());
     }

With regards to the errors you’re getting, those may be related to the GameObject variables.

For more information on Coroutines, how to run them etc, check this out: Unity - Scripting API: Coroutine & Unity - Scripting API: MonoBehaviour.StartCoroutine

Good luck!