 Hi there, this is Krishnanth from Bytescout and in this video, we will be going to learn about the next operator of the T-SQL execution plan called a filter. The filter operator in the execution plan scans the input table and returns only those rows that satisfy the filter expression specified in the predicate. So for example, if you have some predicates in the where close, then it can be evaluated at the leaf level of your table or at the index access operations. So essentially the predicate is evaluated at the storage engine level. But sometimes the predicate in your query can't be pushed at the storage engine level and then you will see a filter operator instead. So filter operators are often used for known sargable predicates or when the predicates are too complicated to be pushed effectively to the index access operations and sometimes you can't prevent it. Let's say if you have a group by having close in your query and you cannot actually apply that having close until the aggregation has occurred. Query optimizer uses the filter operator to return the records that matches the having close predicate at the last stage. So if you see a filter in your execution plan, then they might be for a good reason. Like calculating things you don't currently know the answer to. And sometimes you will see this operator because of your less efficient query. Alright, now enough of this theory, let's see this operator in action. Alright, so for this filter operator demo, let's start off with this query where I joined two tables product and product category with this product category ID column. And here I want to find a product whose category is bikes. Now let's execute this query. And if we look at the execution plan, here we can see an index sick operation for product category table and index can operation for product table. Now here what you don't see is the additional filter operator and it is because this predicate get pushed to the operator at the lift level itself. So we have an index sick for product category table and index can for product table. Alright now in the next query, I want to retrieve the count of products by its category and for that I have to use the group by close by its category name. So now let's execute this query and let us check the execution plan. So now this time you can see that we have a little bit different execution plan than above query. So this time we have a stream aggregate operator, but we still didn't have a filter operator. Now let me uncomment this having close. Now what this having close do is it will retrieve only those category whose product category count is greater than 2. Now let's execute this query again and this time if we see the execution plan here we can see that now we have a filter operator. So we have this filter operator because we have a group by close and once the results are aggregated we have a predicate against those group results. And now when I whore over this filter operator here you can see our predicate which evaluated against those group results. Alright now in the next video we will be going to learn about the next operator called stream aggregate.