1) I think the interpretation is correct, or at least not wrong. For example, if you had -x.Abs() I think you would want it to do .Abs() first. The question is, for -123.Fn() is the minus sign part of the number, or is it an operator as it is in -x.Fn() Currently it is treated as an operator.
2) In general, if the precedence of operations is unclear, then it’s a good idea to use parenthesis. Even if it is only for the benefit of making the code clearer when read later.
3) I am not sure if I understand this question. Inside Numbers methods, ‘this’ will be the original number.
4) The stack overflow is likely because the Print code is calling the method containing the Print, so you get infinite recursion.