A compiler may call those functions in any order (that is, the only guarantee is that f1 and f2 are called before the multiplication, and all three are called before the addition, and that all three will only be called after the value of their arguments is known).
With literal arguments like that, the compiler may well call them as early as possible (like, lines and lines above), or even make them inline.
Most importantly, don't confuse operator precedence with the order of function evaluation.
All you know is that the function will be called after the value of its arguments are known, but before its return value is used.