Function not executing

I have two scripts, and I’d like to call a function to add names to a dropdown, with variables defined in the other script. However, the function does not execute when the game starts. And yes, it is called in the start function.
Heres part of the first code:

public List<string> names = new List<string> () {"names that are irrelevant" };
    public List<string> valueOne;
    public List<string> valueTwo;
    public Dropdown unitToConvert;
    public Dropdown unitOne;
    public Dropdown unitTwo;

And heres part of the second script:

GameObject g = GameObject.Find("Controller");

	ControllerScript controllerScript;

	void Start(){

		g.GetComponent<ControllerScript> ();
		PopulateList ();

	}

	public void PopulateList(){

		controllerScript.unitToConvert.AddOptions(controllerScript.names);
		controllerScript.unitOne.ClearOptions();
		controllerScript.unitTwo.ClearOptions();
		controllerScript.unitOne.AddOptions (controllerScript.valueOne);
		controllerScript.unitTwo.AddOptions (controllerScript.valueTwo);

	}

Does anyone know why this function isn’t executing?

Try putting your

 GameObject g = GameObject.Find("Controller");

here

GameObject g;
     void Start()
    {
         g = GameObject.Find("Controller");
         g.GetComponent<ControllerScript> ();
         PopulateList ();
     
     }