When a smart contract receives two transaction by different users, what is the transaction that the smart contract will deal at first ?
There's no such thing as receiving two transactions at the same time.
A transaction exists inside a block, and transactions within a block are strictly ordered. The miner who successfully mines the block determines that order.
So if two transactions involving the same smart contract are mined into the same block, one happens before the other based on what order they were put into the block by the miner.