(or even calling _approve before the _transfer)
So that the 1st line triggers the condition (SafeMath) that the msg.sender has enough allowance.
??
Note:
I also looked at the burnFrom function and it's implemented with the decreasedAllowance 1st, then approve, then _burn.
I wonder why it's not the case for transferFrom. (gas limits?)
Thanks for the question. The order of _transfer and _approve was discussed in the following issue:
Specifically:
In the case of ERC20 , the order is irrelevant because _transfer and _approve are independent and never call any other contract: they are executed atomically.