Most user-interactive applications (whether mobile, desktop or even web) use an event-driven approach. Methods are invoked in response to events, typically initiated by the user, but possibly by other actions such as the arrival of a packet from the network or the availability of updated GPS location data.
The order of execution is dependent on the order of these events to a large extent; obviously certain blocks of code such as app initialisation and, say, the UIViewController lifecycle methods, will always occur at the same time or in the same sequence with relation to each other, but generally execution is asynchronous.
As a result you can't really state the exact sequence of execution in temporal terms (i.e. You can't say "a will run after 5 seconds and then b will run after that and then ..."). You can understand the execution sequence in response to events - "when the user taps this button, this method executes. It updates data on the server." "When the server notifies that the data has been saved, this code executes to update the text field" or "when the Bluetooth peripheral sends data, this code executes".
In the case of drawRect:
the answer as Phil pointed out in his comment is basically "whenever the system needs this control to draw itself". Because you don't know what the user is going to do or what is going to happen (for example the phone might ring, updating the display entirely out of your apps control, requiring a drawRect call) you can't know precisely when things are going to be called.
You need to understand the context you are writing some code in, what will trigger it and what the code needs to do.
If the context is a subclass, such as a UIView or UIViewController, then you need to refer to the documentation to see what events or methods your code needs to implement.
If the context is a user event handler (say button tap) then you need to implement whatever logic you need in response to that event.
Unfortunately I think that the answer to your question in the case of object you mentioned, boils down to "RTFM" in many cases; you need to understand the class that is being subclassesed and the events and methods that are required.
Learning Swift or Objective-C are the easy parts of iOS development. Understanding the classes and frameworks and how they work is the real learning curve!