You are confusing expressions with clauses.
Although called a "clause" in SQL Server documentation, OVER
is part of an analytic function. It is an expression that returns a scalar results.
Analytic functions can appear in the SELECT
clause and ORDER BY
clause. They are parsed as part of those clauses.
SQL, by the way, is a descriptive language not a procedural language. A query does not specify the "order of execution". That is determined by the compiler and optimizer. What you are referring to is the "order of parsing", which explains how identifiers are resolved in the query.
The confusion I think is usually traced to this reference. The documentation is quite clear that this refers to the "logical processing order", ("This order determines when the objects defined in one step are made available to the clauses in subsequent steps.") But people seem confused anyway.