Gas
Gas is a unit of measurement for computational steps. Every transaction is required to include a gas limit and a fee that it is willing to pay per gas (that is, pay per computation); miners have the choice of including the transaction and collecting the fee. If the gas used by the transaction is less than or equal to the gas limit, the transaction processes. If the total gas exceeds the gas limit, then all changes are reverted, except that the transaction is still valid and the fee (that is, the product of the maximum gas that can be used and gas price) can still be collected by the miner.
The miners decide the gas price (that is, price per computation). If a transaction has a lower gas price than the gas price decided by a miner, the miner will refuse to mine the transaction. The gas price is an amount in a wei unit. So, a miner can refuse to include a transaction in a block if the gas price is lower than what it needs.
Each operation in EVM is assigned a number of how much gas it consumes.
Transaction costs affect the maximum ether an account can transfer to another account. For example, if an account has an ether balance of five, it cannot transfer all five ethers to another account because if all ethers are transferred, there would be no balance in the account to deduct transaction fees from.
If a transaction invokes a contract method and the method sends some ether or invokes some other contract method, the transaction fee is deducted from the account that invoked the contract method.