Sorting and Searching Algorithm
The code is overcommented. Most of the comments do not add any value. They explain what the code is doing, which is obvious; the good comment shall explain why and how the code is doing what it is doing. Some of them are outright wrong, e.g.
   #the middle number is equal to the first num divided by the last number

Say what? Nothing is divided by the last number!
In any case, try to avoid comments. A presence of an explanatory comment means the failure to express yourself in the code.

As mentioned in the comment (no pun intended), the code implements a binary search.
  (fir + las) // 2

is all right in Python with its arbitrarily long integers; in most other languages, which deal with the native integers, computing fir + (las - fir) / 2 is indeed preferable.

Testing for i == -1 looks smelly. Most of the times i remains -1, and it only gets the meaningful value when the target number is found. When the condition
  list[mid] == num

is satisfied, it is a time to break the loop, or even return i right away.

Detour.
Returning -1 when the target number is not there is not right. All the work your function have done is suddenly discarded. Don't be discouraged: you are in the good company. bsearch from the standard C library makes the same blunder.
It is very helpful to return an insertion point instead: where the target number would have been. See how bisect.bisect_left()  does it right (ditto for C++ std::lower_bound).