An Azure relational database service.
First a meta-discussion on how to ask queries. I see these labels:
Your execution plan includes Shuffle operators. SQL Server does not have this operator, but it is used in Azure Synapse Analytics. I think for the particular question, the answer is the same, no matter you are using Synapse or SQL Server, but I need to add that I don't work with Synapse myself.
Now over to your question. SQL is a declarative language. This means that you state what result you want. The database engine you are using - be that Synapse, Oracle, SQL Server or something else - then applies an optimizer to find out which is the best way to compute the result. The join order you have written is just a logical way to express what you are looking for.
When it comes to a convert in the SELECT list, the optimizer can decide to do this before it performs the joins. This means that if there is data that does not convert, you could get an error - even if the bad row is logically filtered out by the JOIN and WHERE conditions.
The simplest way to avoid these accidents is to change cast to try_cast. try_cast returns NULL when the conversion fails rather than producing an error.