OnControllerColliderHit execution order?

So I’m relatively new to Unity. New-ish to c# but not new to coding in general. So from what I’ve read and tested, OnControllerColliderHit will only execute when a move is performed. So if you needed to use it when you are not moving, you would just call move with 0’s. I also wanted to test whether OnControllerColliderHit would get called before or after Update as I couldn’t find anything online about it. From my testing, OnControllerColliderHit gets called before Update does. But this is where I get confused, I call a Move method only in Update and I debug.Log “1” in Update. In OnControllerColliderHit I debug.log “2”. In my scene I have a capsule with my test script attached and I have it placed perfectly on top of a surface. When I check the console, the first ever log is “2” which really doesn’t make sense because when I thought about it, OnControllerColliderHit requires Move to be called. I only had Move in Update which means that Update would have needed to run once to call Move, this would have then logged “1” first. Not “2”. Maybe I’m missing something? Responses would be appreciated.

Also, here’s my (very very small amount of) code if its easier to understand than my explanation:

// Update is called once per frame
void Update () 

{

      controller.Move (new Vector3 (0,-0.1f,0f));

      Debug.Log (1);
}

void OnControllerColliderHit ()
{
    Debug.Log ("2");
}

Do this:

Debug.Log("0");
controller.Move (new Vector3 (0,-0.1f,0f));
Debug.Log("1");

What you will find is that the OnControllerColliderHit() callback occurs during the Move() call. That makes sense. While I’ve never seen the CharacterController code, I’ve always assumed it does it work by Raycasting (certainly behaves that way). So the Raycast detects an object during Move() and the Move() code makes the callback to the OnControllerColliderHit().