Order of Update(), Awake(), etc of gameobjects and their child gameobjects

I am curious as to what the order of script invocation for a gameobject and child gameobjects are. I know that for scripts in the default execution space, the order is random,but does this include gameobjects and their children?

For example:
I have gameobject A, which has a child C.
I have a script on A and another script on C.
Will A’s script update and etc get called first, and then B later?
Or is this order random?

If it is random, how would i make sure that A is called first, in case B’s script depends on A’s script to be initialized and Awake / Start called first?

For parent / child objects it is as Bunny83 posted in this answer:

“There is no specific order. Only the script execution order in Unity 3.4 (like you’ve mentioned). GameObjects don’t have a hierarchical order, just their transform components have. From Unity’s view it have a list of GameObjects which might be ordered the same way they have been created, but you can’t determine that at runtime.
If you need an exact order just implement your own message chain. For example with BroadcastMessage. I’m not a fan of BroadcastMessage so i would use some kind of interface i can use. It depends on whether the childs are created / removed dynamically or if you have a static hierarchy. For a static hierarchy it’s the easiest to hold a list with all child scripts which you can process in the order you like.”

Otherwise functions execute in the order listed as defined by Execution Order of Event Functions and the order of specific scripts can be modified by using Script Execution Order Settings

So if you need script A to run before script B modify the Script Execution Order Settings by following the instructions on the linked page.