Since the documentation is not very specific on this topic here is the order of precedence for vars in the current version of Ansible (the first item has the highest precedence):
- Vars set on the command line -e foo=set_on_cmd_line
- Vars set in the vars_files: block in the play
- Vars set in the vars: block in the play
- Vars set in host_vars/
- Vars set in group_vars/
- Role default vars roles/…/defaults/main.yml
See Ansible docs for a more detailed list.
You should think of host_vars and group_vars more like defaults rather than overrides for defaults. If you have the same var set in you vars_files: block like you do in your example it will take precedence.