how drupal decide execution order of same hook in different modules?
Hooks are called in order of


Weight, which is defined per module in the database as {system.weight}.  Lower weights come earlier in the calling process.
Alphabetical, by module name.


By default, modules get assigned a weight of 0, so nearly all hooks in the system run in alphabetical order.  Some modules will adjust this in their install hooks so they run earlier or later in the module_invoke_all function.

See also: Adjusting module weight: what are the risks and things to look out for?