If I'm wrong please correct me, but I think it is because: Precedence[Apply] Precedence[Compose] > 620 > 670 **So that's why** `Tr[Times]` is done before `Times` is applied to the list. What is also an answer to your question about precedences of functions. It is `Precedence`, an undocumented function. "Good old fashioned" `[]` is safer but I really like `@`, I just have to remeber what is going to happen basing on my experiece, because no one will remember all precedences :) In fact, sometimes I like to do `f @ ( some code )`. The more different brackets, the more transparent code is, IMO. Just for the record. [What are some useful, undocumented Mathematica functions?][1] ---------- There is a discussion about what `@` is. In my opinion `f @ g` does not mean that there's operation `Prefix` with `f` on `g`. `Prefix` is only a syntax form(?). What is happening is: Compose[f, g] That's why I've checked `Precedence` of `Compose`. More about `Compose`: [Why there is no name...][2] [1]: http://mathematica.stackexchange.com/a/819/5478 [2]: http://mathematica.stackexchange.com/questions/28778/why-there-is-no-name-for-12