Thank you for such an amazing question, Paul.
I got it right because I always remember reading that the "top (outer) input" is read first and then it goes look for matches in the "bottom (inner) input". Even the Nest Loops operator works this way, right?
I just started reading the excellent Execution Plan book from Grant Fritchey.
It was a nice timing for me.
Andre Guerreiro Neto