In a decent cost based query planner what happens is (your case)
join conditions and where conditions are parsed at same level
the type of join and statistics determines the path (what happens first) - in such a way that the smallest intermediate results are retrieved (least I/O > fastest query)