If I forget the terminology of FlexSim, then following happens.
The option Use Transport sends by default a transport job to an operator or dispatcher. An operator executes the first receiving job instantly, if he has nothing to do right now. Otherwise the job is queued. If first job is done, he looks for queued jobs by priority.
A dispatcher is only a manager of jobs. Operators are clients of the dispatcher. If an operator has nothing to do, he hasn’t any jobs queued nor he executes a job, then a dispatcher sends a single job to him.
In your case the connections directly to operators let them execute the transport jobs instantly and by priority. Only if an operator hasn’t got nothing more to do, the dispatcher will send a stored transport job to this operator.
In this scenario all jobs have got the same priority value, the distribution of jobs is depending only on the direct connection and over a dispatcher.
If you watch a running model, it looks like the priority logic doesn’t work as intended. An operator takes an item of the shared queue instead of an outer queue. It is a runtime problem. Because the operator has nothing to do at the destination of his last transport job, he waits there. An item arrives at the shared queue. He walks to the shared queue. While an item arrives at an outer queue, but he is already executing a job, this job must he finish before he can do anything else. You can force an operator to decide later which job he does, if you tell him that he has to go a nearer location where he gets his items. This is an option in the OnUnload trigger of an operator.