you'd get the same flow, but your output would be different...
the conditional operator (sometimes called the ternary op. since it has 3 arguments) evaluates a boolean expression, then returns one of two choices. This:
b ? "T" : "F"
is equivilent to this:
Note that it doesn't CHANGE any of these three values... it just looks and one and spits out one of the other two...
so if you changed your m1 function to
the first thing that happens is we call m1 with "B" and false.
in m1, we evaluate b (false) so we spit out the second string. this gets used in the print statement, printing BT.
but since m1 returns b, we still return false.
we now call m1 with "C" and true. b is now true, so the ternary returns the first string, or "F". we print CF.
we return b, which is true. again, the shortcut operator kicks in, so we KNOW our || condition is true, so we never call m1 with "D" and false.
our or condition is true, so we can now call m1 with "A" and true, which will print AF.
so, your change will give
BTCFAF