When reading A?.B, it's equivalent to A && A.B except that A is only evalulated once, even if it's a complex expression like a proc call.
It should instead read
When reading A?.B, it's equivalent to !isnull(A) && A.B except that A is only evalulated once, even if it's a complex expression like a proc call.
The difference in behavior around 0 and "" has been tripping people up in the coderbus Discord lately and it would be nice if the reference was correct.
I think this replacement text still might not be perfectly accurate, but it at least alleviates this particular confusion. Maybe isnull(A) ? null : A.B would be truer?