Hi, everyone.
(Unity 2020.3.14f1) On the video above OnDisable function ignores ExecutionOrder and using the order of scripts from gameobject itself. But Unity doesnt do it for OnEnable or Awake. Any ideas why its working like that? Pics of code below.


It’s probably because Unity doesn’t really elect when to call those. Those get called as a byproduct of the scene being loaded or objects being instantiated. They are extremely tightly bound to the lifecycle of script instances on GameObjects (see diagram below).
Generally I would recommend staying away from using the script execution order mechanism for the above reason plus many other reasons. The main reason is that this mechanism. lives entirely outside of your codebase and is out of sight of code when you are debugging. Instead do the execution order explicitly yourself.
Here is some timing diagram help:
https://docs.unity3d.com/Manual/ExecutionOrder.html
I agree with Kurt in theory, but that does seem like a bug.