Awake() being called before Instantiate()?

So atm I am going through a course on Udemy. In one Example we create a small boss fight in where a turret shoots cannonballs at the player. The cannonball is a prefab which has force added to it on Awake()
just look here:

void Awake()
{
	this.GetComponent<Rigidbody> ().AddRelativeForce (new Vector3  (0, GetRandomValue(), GetRandomValue()));

	this.GetComponent<AudioSource> ().PlayOneShot (audioShoot);
}

The Boss is following the player and using the Instantiate() function to add the rotation and position to the object just look here:

void Update()
{
	FollowPlayer ();

	Shoot ();
}

void FollowPlayer()
{
	this.transform.LookAt (player);
}

void Shoot ()
{
	if ( Time.time > lastTime + delayTime )
	{
		lastTime = Time.time;

		delayTime = GetRandomValue ();

		GameObject obj = Instantiate ( cannonball, this.transform.position, this.transform.rotation );

		obj.name = "Cannonball";
	}
}

The problem is that the cannonball always shoots in the same dircetion, but if i replace Awake() with Start() it shoots where the player is.

EDIT: So I just downloaded the whole project he made in his course and the problem persists. Unity must have made some changes that affect Awake() or something because in his course I can clearly see the Boss shooting the cannonball at him and not in the same direction. Any idea why Awake() doesn’t work but Start() does? Why are my parameters overwritten by standart values when using Awake() but not when using Start()? Start() must come later than Awake() that I am certain

scripts starts with order in inspector.
for example in this object.

Login Register Manager runs before Citizen Human, and Rigidbody runs last.

they all start at same frame but there is also an execution order in a frame too.
this detail plays important role when awake() is used.

if you move your script below rigidbody, you should not see this kind of awake error. I hope.

Please note that I don’t have any context about your problem more than you provided here, this answer may or may not work for you, have seen similar problems solved with this, but I am absolutely have no idea if this works for you or not. if you try, please inform us about result

*EDIT I write the note above because we don’t know what is going on at other scripts, maybe you changed cannon ball direction unintentionally at another Start() or maybe you are using some kind of numerator inside GetRandomValue() , these are first other things may cause this problem came into my mind. *

Maybe you should replace the new Vector3 (0, GetRandomValue(), GetRandomValue()) with new Vector3 (Vector3.forward * GetRandomValue())

So here is my Boss inspector:
107769-boss-inspector.png

And here my Cannonbal inspector:
107770-cannonball-inspector.png

I tried everything but nothing changes any ideas?