Part(pid: integer, pname: string, color: string)
Supplier(sid: integer, sname: string, city: string, address: string)
Catalog(sid: integer, pid: integer, price: real)

Pid: identification number for materials.
Pname: name for materials.
Sname: name for supplier.
Sid: identification for supplier.

Question:

Find all the identification numbers for supplier are provided by Tainan supplier but the lack of part can be provided by Taipei supplier.

The answer is:

SELECT pid
FROM Catalog
WHERE NOT EXISTS(
SELECT *
FROM Supplier
WHERE Catalog.sid= Supplier.sid AND NOT (city='Tainan' or city='Taipei'))

I can't understand this sentence:
NOT (city='Tainan' or city='Taipei'))
The question already says all the identification number are provided by Tainan supplier and why does the sentence uses NOT.
Thank you very much.