I think this is well covered on John West's post which in summary describes what the priority is and how Sitecore handles them:
"The Sitecore layout engine retrieves content from the Sitecore repository in the context language (Sitecore.Context.Language). The default logic to determine the context language is to use the first of these variables that specifies a value:
- The sc_lang query string parameter.
https://www.company.com/about-us/?sc_lang=en
- The language prefix in the path in the requested URL.
https://www.company.com/en/about-us/
- The language cookie associated with the context site.
company#lang
- The default language associated with the context logical site.
<site name="company" patch:before="site[@name='website']"
virtualFolder="/" physicalFolder="/"
rootPath="/sitecore/content/company" language="en"
hostName="www.company.com" />
- The DefaultLanguage setting specified in web.config.
<setting name="DefaultLanguage" value="en" />
References: